if (window.PrimeFaces) {
  /** German */
  PrimeFaces.locales["de"] = {
    startsWith: "Beginnt mit",
    contains: "Enthält",
    notContains: "Enthält nicht",
    endsWith: "Endet mit",
    equals: "Ist gleich",
    notEquals: "Ist ungleich",
    noFilter: "Kein Filter",
    filter: "Filtern",
    lt: "Kleiner als",
    lte: "Kleiner oder gleich",
    gt: "Größer als",
    gte: "Größer oder gleich",
    dateIs: "Datum ist",
    dateIsNot: "Datum ist nicht",
    dateBefore: "Datum ist vor",
    dateAfter: "Datum ist nach",
    custom: "Benutzerdefiniert",
    clear: "Löschen",
    apply: "Übernehmen",
    matchAll: "Passt auf alle",
    matchAny: "Passt auf einige",
    addRule: "Regel hinzufügen",
    removeRule: "Regel entfernen",
    accept: "Ja",
    reject: "Nein",
    choose: "Auswählen",
    upload: "Hochladen",
    cancel: "Abbrechen",
    completed: "Abgeschlossen",
    pending: "Ausstehend",
    fileSizeTypes: ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"],
    dayNames: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
    dayNamesShort: ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam"],
    dayNamesMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
    monthNames: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
    monthNamesShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
    chooseYear: "Jahr wählen",
    chooseMonth: "Monat wählen",
    chooseDate: "Datum wählen",
    prevDecade: "Vorheriges Jahrzehnt",
    nextDecade: "Nächstes Jahrzehnt",
    prevYear: "Vorheriges Jahr",
    nextYear: "Nächstes Jahr",
    prevMonth: "Vorheriger Monat",
    nextMonth: "Nächster Monat",
    prevHour: "Vorherige Stunde",
    nextHour: "Nächste Stunde",
    prevMinute: "Vorherige Minute",
    nextMinute: "Nächste Minute",
    prevSecond: "Vorherige Sekunde",
    nextSecond: "Nächste Sekunde",
    am: "am",
    pm: "pm",
    today: "Heute",
    now: "Jetzt",
    weekHeader: "KW",
    firstDayOfWeek: 1,
    showMonthAfterYear: false,
    dateFormat: "dd.mm.yy",
    weak: "Schwach",
    medium: "Mittel",
    strong: "Stark",
    passwordPrompt: "Passwort eingeben",
    emptyFilterMessage: "Keine Ergebnisse gefunden",
    searchMessage: "{0} Ergebnisse verfügbar",
    selectionMessage: "{0} Elemente ausgewählt",
    emptySelectionMessage: "Kein ausgewähltes Element",
    emptySearchMessage: "Keine Ergebnisse gefunden",
    emptyMessage: "Keine Einträge gefunden",
    unexpectedError: "Unbekannter Fehler",
    aria: {
      trueLabel: "Wahr",
      falseLabel: "Falsch",
      nullLabel: "Nicht ausgewählt",
      star: "1 Stern",
      stars: "{star} Sterne",
      selectAll: "Alle Elemente ausgewählt",
      unselectAll: "Alle Elemente abgewählt",
      close: "Schließen",
      previous: "Vorherige",
      next: "Nächste",
      navigation: "Navigation",
      scrollTop: "Nach oben scrollen",
      moveTop: "Zum Anfang bewegen",
      moveUp: "Nach oben bewegen",
      moveDown: "Nach unten bewegen",
      moveBottom: "Zum Ende bewegen",
      moveToTarget: "Zum Ziel bewegen",
      moveToSource: "Zur Quelle bewegen",
      moveAllToTarget: "Alle zum Ziel bewegen",
      moveAllToSource: "Alle zur Quelle bewegen",
      pageLabel: "Seite {page}",
      firstPageLabel: "Erste Seite",
      lastPageLabel: "Letzte Seite",
      nextPageLabel: "Nächste Seite",
      previousPageLabel: "Vorherige Seite",
      rowsPerPageLabel: "Zeilen pro Seite",
      jumpToPageDropdownLabel: "Zum Dropdown-Menü springen",
      jumpToPageInputLabel: "Zum Eingabefeld springen",
      selectRow: "Zeile ausgewählt",
      unselectRow: "Zeile abgewählt",
      expandRow: "Zeile erweitert",
      collapseRow: "Zeile reduziert",
      showFilterMenu: "Filtermenü anzeigen",
      hideFilterMenu: "Filtermenü ausblenden",
      filterOperator: "Filteroperator",
      filterConstraint: "Filterbeschränkung",
      editRow: "Zeile bearbeiten",
      saveEdit: "Änderungen speichern",
      cancelEdit: "Änderungen abbrechen",
      listView: "Listenansicht",
      gridView: "Rasteransicht",
      slide: "Folie",
      slideNumber: "{slideNumber}",
      zoomImage: "Bild vergrößern",
      zoomIn: "Vergrößern",
      zoomOut: "Verkleinern",
      rotateRight: "Nach rechts drehen",
      rotateLeft: "Nach links drehen",
    },
  };

  // custom PF labels
  PrimeFaces.locales["de"] = $.extend(true, {}, PrimeFaces.locales["de"], {
    weekNumberTitle: "W",
    isRTL: false,
    yearSuffix: "",
    timeOnlyTitle: "Nur Zeit",
    timeText: "Zeit",
    hourText: "Stunde",
    minuteText: "Minute",
    secondText: "Sekunde",
    millisecondText: "Millisekunde",
    year: "Jahr",
    month: "Monat",
    week: "Woche",
    day: "Tag",
    list: "Agenda",
    allDayText: "Ganzer Tag",
    moreLinkText: "Mehr...",
    noEventsText: "Keine Einträge",
    aria: {
      "datatable.sort.ASC": "Spalten aufsteigend sortieren",
      "datatable.sort.DESC": "Spalten absteigend sortieren",
      "datatable.sort.NONE": "Spaltensortierung entfernen",
      "colorpicker.OPEN": "Farbauswahl öffnen",
      "colorpicker.CLOSE": "Farbauswahl schließen",
      "colorpicker.CLEAR": "Die ausgewählte Farbe löschen",
      "colorpicker.MARKER": "Sättigung: {s}. Helligkeit: {v}.",
      "colorpicker.HUESLIDER": "Schieberegler Farbton",
      "colorpicker.ALPHASLIDER": "Schieberegler Deckkraft",
      "colorpicker.INPUT": "Farbwertfeld",
      "colorpicker.FORMAT": "Farbformat",
      "colorpicker.SWATCH": "Farbmuster",
      "colorpicker.INSTRUCTION": "Sättigungs- und Helligkeitsauswahl. Verwenden Sie die Pfeiltasten oben, unten, links und rechts zur Auswahl.",
      "spinner.INCREASE": "Wert erhöhen",
      "spinner.DECREASE": "Wert vermindern",
      "switch.ON": "Ein",
      "switch.OFF": "Aus",
      "messages.ERROR": "Fehler",
      "messages.FATAL": "Schwerwiegender Fehler",
      "messages.INFO": "Information",
      "messages.WARN": "Warnung",
    },
    messages: {
      //optional for Client Side Validation
      "javax.faces.component.UIInput.REQUIRED": "{0}: Eingabe erforderlich.",
      "javax.faces.converter.IntegerConverter.INTEGER": "{2}: '{0}' muss eine Zahl mit einer oder mehr Ziffern sein.",
      "javax.faces.converter.IntegerConverter.INTEGER_detail": "{2}: '{0}' muss eine Zahl zwischen -2147483648 und 2147483647 sein. Beispiel: {1}",
      "javax.faces.converter.DoubleConverter.DOUBLE": "{2}: '{0}' muss eine Zahl mit einer oder mehr Ziffern sein.",
      "javax.faces.converter.DoubleConverter.DOUBLE_detail": "{2}: '{0}' muss eine Zahl zwischen 4.9E-324 und 7976931348623157E308 sein. Beispiel: {1}",
      "javax.faces.converter.BigDecimalConverter.DECIMAL": "{2}: '{0}' muss eine Dezimalzahl mit Vorzeichen sein.",
      "javax.faces.converter.BigDecimalConverter.DECIMAL_detail": "{2}: '{0}' muss eine Dezimalzahl mit Vorzeichen sein, die aus Null oder mehr Ziffern besteht, gefolgt von Dezimalstellen nach einem Punkt. Beispiel: {1}",
      "javax.faces.converter.BigIntegerConverter.BIGINTEGER": "{2}: '{0}' muss eine Zahl mit einer oder mehr Ziffern sein.",
      "javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail": "{2}: '{0}' muss eine Zahl mit einer oder mehr Ziffern sein. Beispiel: {1}",
      "javax.faces.converter.ByteConverter.BYTE": "{2}: '{0}' muss eine Zahl zwischen 0 und 255 sein.",
      "javax.faces.converter.ByteConverter.BYTE_detail": "{2}: '{0}' muss eine Zahl zwischen 0 und 255 sein. Beispiel: {1}",
      "javax.faces.converter.CharacterConverter.CHARACTER": "{1}: '{0}' muss ein gültiges Zeichen sein.",
      "javax.faces.converter.CharacterConverter.CHARACTER_detail": "{1}: '{0}' muss ein gültiges ASCII-Zeichen sein.",
      "javax.faces.converter.ShortConverter.SHORT": "{2}: '{0}' muss eine Zahl mit einer oder mehr Ziffern sein",
      "javax.faces.converter.ShortConverter.SHORT_detail": "{2}: '{0}' muss eine Zahl zwischen -32768 und 32767 sein. Beispiel: {1}",
      "javax.faces.converter.BooleanConverter.BOOLEAN": "{1}: '{0}' muss 'wahr' oder 'falsch' sein.",
      "javax.faces.converter.BooleanConverter.BOOLEAN_detail": "{1}: '{0}' muss 'wahr' oder 'falsch' sein.  Ein Wert der nicht 'wahr' ist wird zu 'falsch'.",
      "javax.faces.validator.LongRangeValidator.MAXIMUM": "{1}: Der Wert ist größer als das Maximum von '{0}'.",
      "javax.faces.validator.LongRangeValidator.MINIMUM": "{1}: Der Wert ist kleiner als das Minimum von '{0}'.",
      "javax.faces.validator.LongRangeValidator.NOT_IN_RANGE": "{2}: Wert ist nicht innerhalb der Grenzen von {0} und {1}.",
      "javax.faces.validator.LongRangeValidator.TYPE={0}": "Wert entsprecht nicht dem vorgegebenen Typ.",
      "javax.faces.validator.DoubleRangeValidator.MAXIMUM": "{1}: Der Wert ist größer als das erlaubte Maximum von '{0}'.",
      "javax.faces.validator.DoubleRangeValidator.MINIMUM": "{1}: Der Wert ist kleiner als das erlaubte Minimum von '{0}'.",
      "javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE": "{2}: Attribute nicht innerhalb der Grenzen von {0} und {1}.",
      "javax.faces.validator.DoubleRangeValidator.TYPE={0}": "Der Wert entspricht nicht dem erwarteten Typ.",
      "javax.faces.converter.FloatConverter.FLOAT": "{2}: '{0}' muss eine Zahl mit einer oder mehr Ziffern sein.",
      "javax.faces.converter.FloatConverter.FLOAT_detail": "{2}: '{0}' muss eine Zahl zwischen 1.4E-45 und 3.4028235E38 sein. Beispiel: {1}",
      "javax.faces.converter.DateTimeConverter.DATE": "{2}: '{0}' kann nicht als Datum interpretiert werden.",
      "javax.faces.converter.DateTimeConverter.DATE_detail": "{2}: '{0}' kann nicht als Datum interpretiert werden. Beispiel: {1}",
      "javax.faces.converter.DateTimeConverter.TIME": "{2}: '{0}' kann nicht als Zeit interpretiert werden.",
      "javax.faces.converter.DateTimeConverter.TIME_detail": "{2}: '{0}' kann nicht als Zeit interpretiert werden. Beispiel: {1}",
      "javax.faces.converter.DateTimeConverter.DATETIME": "{2}: '{0}' kann nicht als Datum oder Zeit interpretiert werden.",
      "javax.faces.converter.DateTimeConverter.DATETIME_detail": "{2}: '{0}' kann nicht als Datum oder Zeit interpretiert werden. Beispiel: {1}",
      "javax.faces.converter.DateTimeConverter.PATTERN_TYPE": "{1}: Ein 'pattern' der 'type' Attribute muss angegeben werden um den Wert '{0}' zu konvertieren.",
      "javax.faces.converter.NumberConverter.CURRENCY": "{2}: '{0}' kann nicht als Währung interpretiert werden.",
      "javax.faces.converter.NumberConverter.CURRENCY_detail": "{2}: '{0}' kann nicht als Währung interpretiert werden. Beispiel: {1}",
      "javax.faces.converter.NumberConverter.PERCENT": "{2}: '{0}' kann nicht als Prozent interpretiert werden.",
      "javax.faces.converter.NumberConverter.PERCENT_detail": "{2}: '{0}' kann nicht als Prozent interpretiert werden. Beispiel: {1}",
      "javax.faces.converter.NumberConverter.NUMBER": "{2}: '{0}' kann nicht als Zahl interpretiert werden.",
      "javax.faces.converter.NumberConverter.NUMBER_detail": "{2}: '{0}' kann nicht als Zahl interpretiert werden. Beispiel: {1}",
      "javax.faces.converter.NumberConverter.PATTERN": "{2}: '{0}' kann nicht als Muster interpretiert werden.",
      "javax.faces.converter.NumberConverter.PATTERN_detail": "{2}: '{0}' kann nicht als Muster interpretiert werden. Beispiel: {1}",
      "javax.faces.validator.LengthValidator.MINIMUM": "{1}: Die Länge ist kleiner als das Minimum von '{0}'.",
      "javax.faces.validator.LengthValidator.MAXIMUM": "{1}: die Länge ist größer als das Maximum von '{0}'.",
      "javax.faces.validator.RegexValidator.PATTERN_NOT_SET": "Ein regulärer Ausdruck darf nicht leer sein.",
      "javax.faces.validator.RegexValidator.PATTERN_NOT_SET_detail": "Ein regulärer Ausdruck darf nicht leer sein.",
      "javax.faces.validator.RegexValidator.NOT_MATCHED": "Das Muster stimmt nicht überein.",
      "javax.faces.validator.RegexValidator.NOT_MATCHED_detail": "Das Muster '{0}' des regulären Ausdruck stimmt nicht überein.",
      "javax.faces.validator.RegexValidator.MATCH_EXCEPTION": "Fehler im regulären Ausdruck.",
      "javax.faces.validator.RegexValidator.MATCH_EXCEPTION_detail": "Fehler im regulären Ausdruck, '{0}'.",
      //optional for bean validation integration in client side validation
      "javax.faces.validator.BeanValidator.MESSAGE": "{0}",
      "javax.validation.constraints.AssertFalse.message": "Muss falsch sein",
      "javax.validation.constraints.AssertTrue.message": "Muss wahr sein",
      "javax.validation.constraints.DecimalMax.message": "Muss kleiner oder gleich {0} sein",
      "javax.validation.constraints.DecimalMin.message": "Muss größer oder gleich {0} sein",
      "javax.validation.constraints.Digits.message": "Zahl außerhalb der Grenzen. (<{0} Ziffern>.<{1} Ziffern> möglich)",
      "javax.validation.constraints.Future.message": "Muss in der Zukunft liegen",
      "javax.validation.constraints.Max.message": "Muss kleiner oder gleich {0} sein",
      "javax.validation.constraints.Min.message": "Muss größer oder gleich {0} sein",
      "javax.validation.constraints.NotNull.message": "darf nicht Null sein",
      "javax.validation.constraints.Null.message": "Muss Null sein",
      "javax.validation.constraints.Past.message": "Muss in der Vergangenheit liegen",
      "javax.validation.constraints.Pattern.message": 'Muss gleich "{0}" sein',
      "javax.validation.constraints.Size.message": "Größe muss zwischen {0} und {1} liegen",
    },
  });

  // Austrian
  PrimeFaces.locales["de_AT"] = $.extend(true, {}, PrimeFaces.locales["de"], {
    monthNames: ["Jänner", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
    monthNamesShort: ["Jän", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
  });
}
